package com.nicole.utils;


import cn.hutool.core.util.StrUtil;

/**
 * @Author: nicole
 * @Date: 2025/06/06
 * @Description: 类型转换
 */
public class Convert {

    /**
     * 转换为字符串,如果给定的值为null，或者转换失败，返回默认值,转换失败不会报错
     *
     * @param value        被转换的值
     * @param defaultValue 转换错误时的默认值
     * @return 结果
     */
    public static String toStr(Object value, String defaultValue) {
        if (null == value) {
            return defaultValue;
        }
        if (value instanceof String) {
            return (String) value;
        }
        return value.toString();
    }

    public static String toStr(Object value) {
        return toStr(value, null);
    }

    /**
     * 转换为boolean,如果给定的值为空，或者转换失败，返回默认值,转换失败不会报错
     */
    public static Boolean toBool(Object value) {
        return toBool(value, null);
    }

    public static Boolean toBool(Object value, Boolean defaultValue) {
        if (value == null) {
            return defaultValue;
        }
        if (value instanceof Boolean) {
            return (Boolean) value;
        }
        String valueStr = toStr(value, null);
        if (StrUtil.isEmpty(valueStr)) {
            return defaultValue;
        }
        valueStr = valueStr.trim().toLowerCase();
        switch (valueStr) {
            case "true":
            case "yes":
            case "ok":
            case "1":
                return true;
            case "false":
            case "no":
            case "0":
                return false;
            default:
                return defaultValue;
        }
    }


}
